/**
 * 提示与加载工具类
 */
export default class Tips {
    constructor() {
            this.isLoading = false;
    }
        /**
         * 弹出提示框
         */

    static success(title, duration = 500){
        setTimeout(() => {
            wx.showToast({
                title: title,
                icon: "success",
                mask: true,
                duration: duration
            });
        }, 300);
        if (duration > 0) {
            return new Promise((resolve, reject) => {
                setTimeout(() => {
                    resolve();
                }, duration);
            });
        }
    }

    /**
     * 弹出确认窗口
     */
    static confirm(text, payload = {}, title = "提示") {
        return new Promise((resolve, reject) => {
            wx.showModal({
                title: title,
                content: text,
                showCancel: true,
                success: res => {
                    if (res.confirm) {
                        resolve(payload);
                    } else if (res.cancel) {
                        reject(payload);
                    }
                },
                fail: res => {
                    reject(payload);
                }
            });
        });
    }

    /**
     *  toast 提示
     * @param title  提示内容
     * @param onHide  隐藏的回调函数
     * @param icon    显示的 icon , none 表示只显示文字
     * @param time    停留时间 默认为 1500 => 1.5s
     */
    static toast(title,onHide, icon = "success",time =2000) {
        setTimeout(() => {
            wx.showToast({
                title: title,
                icon: icon,
                mask: true,
                duration: time
            });
        }, 300);

        // 隐藏结束回调
        if (onHide) {
            setTimeout(() => {
                onHide();
            }, 500);
        }
    }

    /**
     * 警告框
     */
    static alert(title) {
        wx.showToast({
            title: title,
            icon: 'none',
            mask: true,
            duration: 2000
        });
    }

    /**
     * 错误框
     */

    static error(title, onHide) {
        wx.showToast({
            title: title,
            icon: 'none',
            mask: true,
            duration: 2000
        });
        // 隐藏结束回调
        if (onHide) {
            setTimeout(() => {
                onHide();
            }, 2000);
        }
    }

    /**
     * 弹出加载提示
     */
    static loading(title = "加载中") {
        if (Tips.isLoading) {
            return;
        }
        Tips.isLoading = true;
        wx.showLoading({
            title: title,
            mask: true
        });
    }

    /**
     * 加载完毕
     */
    static loaded() {
        if (Tips.isLoading) {
            Tips.isLoading = false;
            wx.hideLoading();
        }
    }

    /**
     * 分享提示
     * @param title
     * @param url
     * @param desc
     * @returns {{title: *, path: *, desc: *, success: success}}
     */
    static share(title, url, desc) {
        return {
            title: title,
            path: url,
            desc: desc,
            success: function(res) {
                Tips.toast("分享成功");
            }
        };
    }
}

/**
 * 静态变量，是否加载中
 */
Tips.isLoading = false;
